package pruebasUnitarias;

import juego.Juego;
import junit.framework.TestCase;
import tablero.Posicion;
import ataques.Disparo;
import ataques.MinaSimple;
import barco.Direccion;
import barco.Lancha;

public class JuegoTest extends TestCase {

    public void testPasarTurnoRestaDiezPuntosAJugador() {
        int puntos = 10000;
        int puntosTurno = 10;
        Juego juego = new Juego();
        juego.pasarTurno();
        puntos -= puntosTurno;
        assertEquals(juego.getPuntos(), puntos);
    }

    public void testPasarTurnoMueveElBarco() {
        Juego juego = new Juego();
        Lancha lancha = new Lancha(Direccion.ABAJODERECHA);
        juego.getTablero().colocarBarcoHorizontal(new Posicion(3, 3), lancha);
        juego.pasarTurno();
        assertEquals(lancha.getPartes().get(0).getPosicion().getFila(), 4);
        assertEquals(lancha.getPartes().get(0).getPosicion().getColumna(), 4);
    }

    public void testPasarTurnoActualizaRetardoMina() {
        Juego juego = new Juego();
        MinaSimple mina = new MinaSimple(new Posicion(1, 1));
        juego.lanzarAtaque(mina);
        juego.pasarTurno();
        juego.pasarTurno();
        assertEquals(mina.getRetardo(), 2);
    }

    public void testDispararAgregaUnDisparoEnElTablero() {
        Juego juego = new Juego();
        Posicion posicion = new Posicion(1, 1);
        Lancha lancha = new Lancha(Direccion.ABAJO);
        juego.getTablero().colocarBarcoHorizontal(posicion, lancha);
        Disparo disparo = new Disparo(posicion);
        juego.lanzarAtaque(disparo);
        assertEquals(juego.getTablero().getCasillero(posicion).getComponentes().get(0).getVida(), 0);
    }

    public void testDispararAgregaUnaMinaEnElTablero() {
        Juego juego = new Juego();
        Posicion posicion = new Posicion(1, 1);
        Lancha lancha = new Lancha(Direccion.ABAJO);
        juego.getTablero().colocarBarcoHorizontal(posicion, lancha);
        MinaSimple mina = new MinaSimple(posicion);
        juego.lanzarAtaque(mina);
        assertEquals(juego.getTablero().getCasillero(posicion).getMinas().size(), 1);
    }

}
